﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Security.Services;
using Sinacor.UI.Bovespa.Corretagem.Communication.Bovespa.Movimento.ControleMovimentoOrdens;

namespace Sinacor.UI.Bovespa.Corretagem.Communication
{
    public class ControleMovimentoOrdens : BaseCommunication
    {
         #region Atributos

        Translator.ModelToDataContract.ControleMovimentoOrdens _translatorModelToDC = null;
        Translator.DataContractToModel.ControleMovimentoOrdens _translatorDCToModel = null;

        #endregion

        #region Construtores

        /// <summary>
        /// Construtor padrão
        /// </summary>
        /// <param name="sessionInformation">Informação da sessão</param>
        public ControleMovimentoOrdens(SessionInformation sessionInformation)
            : base(sessionInformation)
        {
            this._translatorModelToDC = new Translator.ModelToDataContract.ControleMovimentoOrdens();
            this._translatorDCToModel = new Translator.DataContractToModel.ControleMovimentoOrdens();
        }

        #endregion

        #region ObterInformacoesMovimento

        /// <summary>
        /// Altera no banco de dados uma tabela de corretagem
        /// </summary>
        /// <param name="model">Parâmetro para alterar no banco de dados um tabela de corretagem</param>
        public Model.InformacoesMovimento ObterInformacoesMovimento(Model.DataMovimento model)
        {
            Model.InformacoesMovimento informacoesMovimento = null;
            IControleMovimentoOrdens servico = null;

            try
            {
                using (ServiceInstance<IControleMovimentoOrdens> service = new ServiceInstance<IControleMovimentoOrdens>())
                {
                    servico = service.TryGetInstance(this.Session);
                    informacoesMovimento = this._translatorDCToModel.ToInformacoesMovimento(servico.ObterInformacoesMovimento(this._translatorModelToDC.ToDataMovimento(model)));
                }
            }
            catch (Exception ex)
            {
                base.HandleFault(ex);
            }

            return informacoesMovimento;
        }

        #endregion
    }
}
